Proactive input method editor switching

ABSTRACT

Method and apparatus for proactive IME switching are provided. Embodiments receive a first input using a first input method editor (IME) of a plurality of IMEs. A first string corresponding to the first input is determined using the first IME. Upon receiving an indication that the first string is incorrect, a second IME of the plurality of IMEs is selected based on a mapping between a context of the first input and the second IME, wherein the context of the first input comprises: a first application that the first input was intended for; the first input; and a series of strings determined just before receiving the first input. Finally, a second string for a second input is determined using the second IME.

BACKGROUND

The present invention relates to the field of input devices, and morespecifically, to automatically and proactively switching between inputmethod editors.

Written languages using large numbers of characters that represent wordsor morphemes, sometimes referred to as ideographic characters, facecomplication when trying to provide input from standard computing inputdevices, such as a standard keyboard. Some languages, such as MandarinChinese, may have thousands of characters that can be used in writtenexpression. Phonetic Romanization has been used in which the phoneticpronunciation of the character is represented in Romanized or Latinizedcharacters that are produced using the American Standard Code forInformation Interchange (ASCII). Romanization or Latinization is theconversion of writing from a different writing system to the Roman(Latin) script. Methods of Romanization of written text includetransliteration, converting text from one written type of script toanother, and transcription, which is the systematic representation oflanguage in written form. For example, a given input could betranscribed by a computing device by generating a string correspondingto the input. Transcription methods include the first transcription(such as phonetic, radical, image (handwriting), audio (speech)transcripts), which associate with well-defined and mapped meaningfulideographic symbol (second transcription). Any of above transcriptionmapping methods can be developed as an input method. Users can input thefirst transcription into a special input method program to produce asecond transcription. For instance, pinyin input method is one of mostpopular input methods for generating Chinese characters using atraditional Latin keyboard.

For Mandarin Chinese, for example, pinyin is a phonetic system fortranscribing the sound of Chinese characters into Romanized script.Pinyin enables a user to identify a Chinese character by the phoneticpronunciation of the Chinese character, whose sound is described by thetranscribed Romanized script. A pinyin-based input method editor allowsusers input Romanized characters to generate Chinese characters.Generally, numerous input method editors may exist, and a user mayinstall multiple distinct input method editors for Chinese input.

SUMMARY

According to one embodiment of the present invention, a first input isreceived to be transcribed using a first input method editor (IME) of aplurality of IMEs. Next, a first transcription is determined for thefirst input using the first IME. Upon receiving an indication that thefirst transcription is incorrect, a second IME of the plurality of IMEsis selected based on a mapping between a context of the first input andthe second IME, wherein the context of the first input comprises a firstapplication that the first input was intended for, the first input, anda series of transcriptions that were determined just before receivingthe first input. Finally, a second transcription is determined for asecond input using the second IME.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a block diagram illustrating a system configured with an erroranalysis module, according to one embodiment described herein.

FIG. 2 is a flow diagram illustrating a method of proactively switchingIMEs for transcribing user input, according to one embodiment describedherein.

FIG. 3 is a flow chart illustrating a method of proactively switchingIMEs for transcribing user input, according to one embodiment describedherein.

FIG. 4 is a flow chart illustrating a method of predictively switchingIMEs to transcribe future user input, according to one embodiment of thepresent disclosure.

DETAILED DESCRIPTION

Input method editors (IMEs) are programs or applications that enableusers to input complex characters to a computing system even when thedesired character does not have a corresponding key on the userinterface. For example, Chinese, Japanese, Korean, Vietnamese (CJKV),and many other complex languages each contain many thousands of uniquecharacters, and it is not feasible to provide a dedicated key for eachcharacter. Users who wish to input such complex characters, therefore,must rely on one or more IMEs to transcribe some other kind of inputinto the desired characters. There are a large number of IMEs today,many relying on QWERTY keyboards, audio input, handwriting analysis, orsome other form of input. As is discussed briefly below, each type ofIME has advantages and disadvantages, so most users routinely utilizemultiple IMEs on a single device, and switch between them frequently inorder to facilitate transcription. This manual IME switching istime-consuming and frustrating, and an automated process for selecting amore advantageous IME is desired.

One popular type of IME is a handwriting IME that uses handwritingrecognition to transcribe a user's input to the correspondingcharacter(s). These handwriting IMEs may scan writing that a user haspreviously written, but more frequently they provide a space for theuser to write directly on an input section of a device and the input istranscribed in real time. This input section may be a portion of a touchscreen, a dedicated device used only for handwriting input, or any othersuitable method of inputting handwriting. Handwriting IMEs areconvenient in that they often require no extra hardware that the userdoes not already possess, and they are relatively quick, especially ifthe user has a stylus. Unfortunately, handwriting IMEs can be difficultto use as well. If a particular user's handwriting is sloppy or hasunique quirks, many handwriting IMEs will struggle to provide a correcttranscription. Similarly, handwriting IMEs can be difficult to use ifthe user is moving or being jostled, for instance on a bus or train.Often, a handwriting IME will work well for many characters but willfrequently fail to provide an accurate transcription for more complexcharacters. Thus, users frequently switch to another type of IME whenthey know they need to input a character that the handwriting IME cannotrecognize.

Another popular type of IME is an audio IME. Audio IMEs use a microphoneto receive verbal input from a user, and transcribe the spoken speechinto text. Speech recognition is useful to quickly transcribe input, butcan also be undesirable to use. Using an audio IME requires the user tospeak out loud, which can compromise privacy and annoy others if theuser is in a public setting. Additionally, the speech recognitionemployed by audio IMEs may frequently fail to accurately transcribeinput if the user has an accent. Similarly, audio IMEs are difficult touse if there is ambient noise in the area. As above, audio IMEs mayfrequently work well for some characters while repeatedly failing torecognize other characters or phrases, often because of accents andunique quirks of each user. Thus, users frequently switch between audioIMEs and other types of IMEs.

A third popular type of IME is a romanization IME that allows a user toinput Latin characters (often English characters on a QWERTY keyboard ora T9-style keyboard) for transcription. One popular example is a pinyinIME for Chinese transcription, though similar IMEs exist for otherlanguages as well. For purposes of brevity, these IMEs are describedusing pinyin IMEs as representative. Pinyin IMEs and other related IMEsrely on romanization of the target language. For example, the pinyinmethod of romanization is an established system of writing Chinesecharacters using the Roman (e.g., Latin or English) alphabet andfrequently uses a standard QWERTY keyboard. Pinyin approximates thepronunciation of Chinese characters and phrases using English/Latincharacters. For example, the Chinese character “

” meaning “photograph” can be written as “zhào piàn” in pinyin. PinyinIMEs are advantageous in that they require nothing more than a standardkeyboard and input can be provided silently and relatively quickly.

A key disadvantage to such systems, however, is that the user must knowhow to accurately pronounce the desired character and know how todescribe that pronunciation using Latin letters. Different individualsmay frequently pronounce the same phrase or character quite differently,which leads to obvious problems using a pinyin IME. Additionally, manycharacters are pronounced very similarly, and it can be tedious to gothrough dozens of transcription suggestions to arrive at the desiredcharacter. In particular, one issue in the use of pinyin or phonemicbased scripts, is the number of homonyms that may exist for the sameLatinized or Romanized (hereafter referred to as Romanized orRomanization), script characters. Many phonetic input systems use amultiple-choice method to address this homonym issue, presenting acandidate list of possible characters with the same pronunciation foreach syllable entered, for selection by a user. For example, thepronunciation of “yi” in Mandarin Chinese can correspond to over 100Chinese characters, which would generate a large list of characters fromwhich a user must choose the most appropriate for the intended use. Forthese reasons, many users switch from pinyin IMEs to other IMEs totranscribe particular phrases or characters.

Another popular option for users is a stroke IME that is based on thestructure of the desired character. Often, the order of strokes that auser uses when writing the character by hand is used. Common Chinesestroke IMEs use five keys for entry, one key for each type of stroke.These IMEs are advantages in that they do not rely on pronunciation, butcan be difficult to use, especially for characters with similarappearances. There are many other types of IMEs, and many differentspecific IMEs within each type. As is clear, users frequently desire touse multiple IMEs for input, switching manually between them frequentlybased on the character that they wish to enter.

Various IMEs can be provided to a user in a variety of ways. Sometranscription can be provided locally on the user's device, but may alsobe provided as a service on a remote device, e.g., in the cloud.Frequently, IMEs are used on mobile devices such as cell phones, butthey are also useful (and often required) for other devices, including alaptop, desktop computer, wearable device, or any other device whichreceives input from a user. A single user may have multiple IMEs formultiple languages, but users also frequently install multiple IMEs fora single language in order to facilitate transcription. Because each IMEhas advantages and disadvantages, users frequently switch to a differentIME for the same target language manually for a single or fewcharacters, only to switch back to their preferred IME immediatelyafterwards. Such manual switching is time-consuming and frustrating.Embodiments of the present disclosure generally utilizecontext-sensitive intelligent switching between IMEs based on priormanual IME switches, transcription errors, predefined rules, and usercustomization, even if the multiple IMEs provide transcription for asingle target language.

FIG. 1 is a block diagram illustrating a system for intelligentlyswitching IMEs, based on an embodiment of the present disclosure. Asshown in FIG. 1, the system 100 includes a User System 101 and a RemoteSystem 151 connected by a Network 130. In some embodiments, alltranscription is performed locally and there is no need for a RemoteSystem 151. In other embodiments, one or more of the IMEs that a userwishes to access are provided as a service on Remote Server 151.Generally, User System 101 may send input provided by a user overNetwork 130 to Remote System 151 where it is transcribed. The resultingtranscription is then sent back over Network 130 to User System 101. Asshown, User System 101 contains a Computer Processor 102, Storage media103, Memory 104, and a Network Interface 111. Computer Processor 102 maybe any processor capable of performing the functions described herein.The User System 101 may connect to the Network 130 using the NetworkInterface 111. Furthermore, as will be understood by one of ordinaryskill in the art, any computer system capable of performing thefunctions described herein may be used.

In the pictured embodiment, Memory 104 contains an Operating System 105,a Client Application 106, an Error Analysis Module 107, a plurality ofIME Switch Logs 108, a User Profile 109, and one or more Local IME(s)110. Of course, in some embodiments all IMEs that the user accesses arelocated remotely and no Local IME(s) 109 are present. Although Memory104 is shown as a single entity, Memory 104 may include one or morememory devices having blocks of memory associated with physicaladdresses, such as random access memory (RAM), read only memory (ROM),flash memory, or other types of volatile and/or non-volatile memory. TheOperating System 105 may be any operating system capable of performingthe functions described herein.

The Client Application 106 is any application requiring input from auser, where the user wishes to use an IME to provide said input. TheError Analysis Module 107 monitors manual IME switches and input fromthe user to Client Application 106, determines whether an IME switch isrequired, and switches to a second IME when required, as will bediscussed in greater detail below. The Error Analysis Module 107 alsorecords transcription errors in the IME Switch Logs 108, as will also bediscussed in more detail below. Additionally, in some embodiments ErrorAnalysis Module 107 also generates IME Switch Logs 108 when a usermanually switches to a second IME, even when no transcription error wasmade. The IME Switch Logs 108 may include a reference to the IME thatwas selected by the user, the input that triggered the faultytranscription, the context of the input, a reference to the ClientApplication 106, and any other useful data as will be described in moredetail below. The Local IME(s) 110 may be any IME capable oftranscribing any type of user input, including an audio IME, pinyin IME,stroke IME, and handwriting IME. User Profile 109 generally containsinformation about user preferences and IME configurations, as will bediscussed in more detail below.

The Remote System 151 contains a Computer Processor 152, Storage media153, Memory 154, and a Network Interface 161. Computer Processor 152 maybe any processor capable of performing the functions described herein.The Remote System 151 may connect to the Network 130 using the NetworkInterface 161. Furthermore, as will be understood by one of ordinaryskill in the art, any computer system capable of performing thefunctions described herein may be used.

In the pictured embodiment, Memory 154 contains an Operating System 155and one or more Remote IME(s) 159. Although Memory 154 is shown as asingle entity, Memory 104 may include one or more memory devices havingblocks of memory associated with physical addresses, such as randomaccess memory (RAM), read only memory (ROM), flash memory, or othertypes of volatile and/or non-volatile memory. The Operating System 155may be any operating system capable of performing the functionsdescribed herein. The Remote System 151 is generally configured toreceive input from Network 130, transcribe the input using the one ormore Remote IME(s) 159, and return the transcription back to the devicethat sent the input.

FIG. 2 illustrates a flow diagram for a method 200 of one embodiment ofthe present disclosure. The method 200 begins at block 201, where thesystem receives a first input to be processed using a first input methodeditor (IME) of a plurality of IMEs. Then, at block 202, the systemdetermines a first string corresponding to the first input using thefirst IME. The method 200 next proceeds to block 203, where, uponreceiving an indication that the first string is incorrect, the system,e.g., the Error Analysis Module 107, selects a second IME of theplurality of IMEs based on a mapping between a context of the firstinput and the second IME, wherein the context of the first inputcomprises: a first application that the first input was intended for;the first input; and a series of strings determined just beforereceiving the first input. Finally, the method 200 concludes at block204, where the system determines a second string corresponding to asecond input using the second IME.

FIG. 3 is a flow chart illustrating one embodiment of the presentdisclosure. As illustrated, FIG. 3 shows a method 300 for intelligentautomatic IME switching based on context. The method 300 begins at block301, where the system receives input from a user. The input is to betranscribed using an IME, and may be audio, a handwriting image, text, aseries of strokes, or any other appropriate input that can betranscribed. At block 302, the system optionally determines whether thedesired IME is located locally or on a remote system, e.g. Remote System151. As discussed herein, a particular IME may be executed entirely on auser's local device, entirely on a remote server, e.g., in the cloud, ormay be split between local and remote execution. As FIG. 3 illustrates,if the desired IME service is provided on a remote system, the input issent to the remote system at block 303. The remote system may becommunicatively coupled to the local system in any manner sufficient toperform the functions disclosed herein. Additionally, the remote IMEservice may in fact be located on the same device as the local system,e.g., in another virtual machine on the same physical device. At block304, the local system receives a suggested transcription from the remotesystem, and proceeds with the method 300.

Alternatively, if the system determines at block 302 that the desiredtranscription can be executed locally, the method 300 proceeds to block305 where a suggested transcription is generated based on the inputusing the local IME. As illustrated, the method 300 proceeds to block306 where the system determines whether the suggested transcription iscorrect. In some embodiments, Error Analysis Module 107 is configured tomake the determination regarding the correctness of the transcription.In an embodiment, the suggested transcription is provided to theinputting user and the user may manually or verbally confirm thetranscription as correct or discard the transcription as incorrect.Additionally or alternatively, the system or Error Analysis Module 107may be configured to detect that a user confirmed a transcription butimmediately deleted it after inserting it. This may indicate that thetranscription was not correct, but the user accidentally orintentionally inserted it only to delete it and switch to a differentIME for entering the correct character. If the transcription wascorrect, the method 300 returns to block 301 where the user providesinput for further transcription. Alternatively, if the system or ErrorAnalysis Module 107 determines that the transcription was incorrect, themethod 300 proceeds to block 307.

At block 307, the Error Analysis Module 107 compares the context of theinput to prior IME switching records and/or user profiles. In someembodiments, the input context and prior IME switch records include thecorrect transcriptions that were entered just before the input which ledto the incorrect transcription. For example, the Error Analysis Module107 may be configured to determine whether a series of charactersentered just before the current error corresponds to a series ofcharacters leading up to a prior error and manual switch. In anotherembodiment, the input context includes the input itself, and the ErrorAnalysis Module 107 compares the input that led to the current failedtranscription to prior input. For example, the Error Analysis Module 107may be configured to determine that a handwriting image is similar tosome previous handwriting image that is stored in a prior IME switchrecord. In another embodiment, the input context includes theapplication that the user is interacting with when the transcriptionerror occurs. For example, the Error Analysis Module 107 may beconfigured to compare the current context to prior IME switches thatoccurred when using the same application as the current input.

In some embodiments, the user can select what is and is not stored inthe prior IME switch records and compared to the present input context.For example, a user may not care whether the application being used isthe same, or may want error records from other applications to be used,but with a discounted weight. Alternatively, a user may be uncomfortablewith storing the transcriptions leading up to prior errors due toprivacy concerns, and may configure the system to only consider thecurrent input itself. These preferences can be stored in a configurableuser profile, and can be taken into account by Error Analysis Module 107at block 307. In some embodiments, the user profile may also containinformation about preferred or default IMEs for the user. The defaultIME may be specific to each application, or may be the same across theentire device. In another embodiment, the user profile includes a secondIME that is preferred if a switch is required. For example, a user mayindicate that their preferred or default IME is a handwriting IME, butthat if a switch is required, it is preferred to switch to a stroke IME.Additionally, in some embodiments the user may indicate that the systemshould never switch to a different IME when certain applications arebeing used.

At block 308, after comparing the input context to prior IME switches,the Error Analysis Module 107 determines whether or not to switch to asecond IME. If the Error Analysis Module 107 determines that another IMEis better suited to transcribe the input, e.g., because the inputcontext is similar to at least one prior IME switch, the method 300proceeds to block 309 where the new IME is selected for futuretranscriptions. In some embodiments, the switch is accomplished byupdating a pointer which points to the IME that is to be used for agiven input. For example, the IME pointer may indicate a section of diskspace or a location on a network where the IME service is located, andblock 309 may comprise updating that pointer to point to a differentsection. After switching to a second IME, the method 300 returns toblock 301, where the user may attempt to enter the desired characteragain.

In some embodiments, the Error Analysis Module 107 is configured toimmediately switch back to the first IME after the user enters thedesired character. For example, a user may indicate that the suggestedtranscription is wrong when using a handwriting IME. The Error AnalysisModule 107, in response, may automatically switch to an audio IME. Insome embodiments, the system continues to use the audio IME until theuser switches back manually, or until another incorrect transcriptionoccurs. In some embodiments, however, the Error Analysis Module 107 isconfigured to use the audio IME only for transcription of a singlecharacter or a small number of characters. The Error Analysis Module 107may then automatically switch back to the original IME so that the usermay continue entering characters using their preferred IME.

In some embodiments, the Error Analysis Module 107 is configured tocontinue to monitor the user's actions even after determining at block308 to switch to a different IME. For example, if, after the automaticswitch, the user does not enter new input but instead manually switchesback to the first IME, the Error Analysis Module 107 may be configuredto record an indication of that as well. Additionally or alternatively,the Error Analysis Module 107 may be configured to weaken the mappingthat led to the automatic switch. For example, the Error Analysis Module107 may be less likely to make the same automatic switch based on thesame context in the future, because the user was not pleased with theresult. In this way, the Error Analysis Module 107 evolves and learnsfrom the user's patterns and provides intelligent switching decisionsbased on the context of the input and the user's preferences.

If, at block 308, the Error Analysis Module 107 decides not to switchIMEs, e.g., because the input context is not similar to any prior IMEswitch records, the method 300 proceeds to block 310 where the ErrorAnalysis Module 107 monitors the system to determine whether the userhas manually switched to a second IME in response to the failedtranscription. If the user goes on to provide input for transcriptionand does not switch to a second IME, the method 300 returns to block301. For example, the transcription may have been inaccurate because ofloud background noises, mistyping by the user, or any other reason otherthan inadequacy of the IME. Alternatively, if the user manually switchesto a second IME, the method 300 proceeds to block 311. At block 311, theError Analysis Module 107 creates a record which logs the context of thefailed input, as well as an indication of the IME that the userselected. As discussed above, the input context may include a variety ofinformation. In some embodiments, the input context includes thetranscribed characters that led up to the failed transcription. Inanother embodiment, the input context includes the input itself that wasimproperly transcribed. In yet another embodiment, the input contextincludes the input provided by the user which was properly transcribed,as well as the resulting transcriptions. In some embodiments, thecontext includes the application that the input was intended for.Additionally, in some embodiments the input context includes a referenceto the IME that provided the incorrect transcription.

In some embodiments, the input context also includes information aboutwhat the user did after the manual IME switch. For example, the log mayinclude the transcribed character or characters that were entered justafter the switch. Additionally, the log may include an indication thatthe user entered a single character or a small number of characters, andthen switched back to the original IME. In some embodiments, thisadditional information enables the Error Analysis Module 107 tointelligently switch to a second IME upon determining that the first IMEis incapable of correct transcription, and then determine when to returnto the first IME based on learning from the user's patterns. Afterlogging the context of the failed input and the IME switch, the method300 returns to 301 to allow the user to continue to input information tobe transcribed using the selected IME. In this way, the Error AnalysisModule 107 will be better suited to intelligently switch IMEs for futuretranscriptions.

FIG. 4 illustrates a flow chart for a method 400 implementing anotherembodiment of the present disclosure. The method 400 begins at block401, where the system receives input from a user. At block 402, thesystem generates a string based on the received input and provides thestring to the user. Block 402 broadly represents the transcriptionprocess illustrated in FIG. 3, but the method illustrated in FIG. 4applies only when the suggested string is correct and the user confirmsits entry. The illustrated embodiment of FIG. 4 departs from the abovediscussed embodiments at block 403. At block 403, rather than simplyreturning to block 401 to receive input from the user, the ErrorAnalysis Module 107 determines a context of the provided string. In someembodiments, the context includes the generated string itself. In otherembodiments, the context also includes previously generated strings thatled up to the current correct string. Additionally, in some embodiments,the context includes the application that the transcriptions are beinggenerated for. The context may also include a reference to the IME thatwas used for each of the immediately preceding generated strings, aswell as for the current correct string.

At block 404, the Error Analysis Module 107 determines whether thecurrent context is similar to or corresponds to prior IME switchrecords. The IME switch records contain logs of previous IME switchesand the associated context. For example, as discussed above, the ErrorAnalysis Module 107 could determine whether the sequence of strings orinputs of the current situation are similar to the sequence of stringsthat immediately preceded an IME switch in the past. Additionally oralternatively, the Error Analysis Module 107 may be configured tocompare the application being used, the IME being used before theswitch, and any other context disclosed herein. If the Error AnalysisModule 107 determines that switching IMEs would be inappropriate, themethod 400 returns to block 401 to receive input from the user. Thisdetermination may be made, for example, because no prior IME switchesmatch the current context. In some embodiments, the current context maybe similar to one or more prior switches, but the Error Analysis Module107 may determine that a switch would be inappropriate for otherreasons. For example, the Error Analysis Module 107 may determine thatthe current context occurs frequently and only rarely does the userintend to switch to a different IME for the next input.

Alternatively, the Error Analysis Module 107 may determine, at block404, that the IME should be switched based on the current context andthe context of prior IME switches. For example, a user may repeatedlyenter a series of characters such as a place, a name, or a phrase, andthen switch manually to another IME because the next character to beentered will likely be difficult with the current IME. This pattern canrecur frequently, with the Error Analysis Module 107 logging eachswitch. Additionally or alternatively, as discussed above, the ErrorAnalysis Module 107 may automatically switch to a second IME based onreceiving an indication that the suggested transcription is incorrect.Each of these automatic switches may also generate an IME switch record.Based on these records, at block 404 the Error Analysis Module 107 maydetermine that the user will likely want to switch to a different IMEfor the next character. If so, the method 400 proceeds to block 405where the Error Analysis Module 107 automatically switches to the secondIME. As discussed above, this switch could be accomplished throughupdating a pointer to the current IME, or any other appropriate methodto achieve the functions disclosed herein.

In the illustrated embodiment of FIG. 4, the Error Analysis Module 107intelligently switches to a second IME before a transcription error iseven made, based on recognizing a pattern of switches in the past. Asdiscussed above, the Error Analysis Module 107 may further automaticallyswitch back to the first IME after the next character is inputted, againbased on the historic records and context. This enables the system toseamlessly transcribe input from the user using multiple IMEs, switchingback and forth between them as needed, with minimal user intervention.

In some embodiments, the Error Analysis Module 107 can determine thatthe sequence of generated strings or inputs of the current situationconstitutes an invalid sequence of transcriptions in the current IME butalso identify a different IME for which the sequence constitutes a validsequence of transcriptions. Determinations of what constitutes a validor invalid sequence of transcriptions of a particular IME can be basedon a predefined set of validity rules that are specific to theparticular IME. In instances where a different, intended IME isunambiguously identified (e.g., where the sequence is valid only for asingle one of the available IMEs and invalid for all the others), theError Analysis Module 107 may switch to the identified IME in a mannerthat retroactively accepts the sequence as input—even absent past IMEswitches as guidance. Depending on the embodiment, such an IME switchmay occur with or without triggering a formal error in the current IME.Doing so relieves the user from having to manually switch to thedifferent IME and reenter the sequence of transcriptions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

In the following, reference is made to embodiments presented in thisdisclosure. However, the scope of the present disclosure is not limitedto specific described embodiments. Instead, any combination of thefollowing features and elements, whether related to differentembodiments or not, is contemplated to implement and practicecontemplated embodiments. Furthermore, although embodiments disclosedherein may achieve advantages over other possible solutions or over theprior art, whether or not a particular advantage is achieved by a givenembodiment is not limiting of the scope of the present disclosure. Thus,the following aspects, features, embodiments and advantages are merelyillustrative and are not considered elements or limitations of theappended claims except where explicitly recited in a claim(s). Likewise,reference to “the invention” shall not be construed as a generalizationof any inventive subject matter disclosed herein and shall not beconsidered to be an element or limitation of the appended claims exceptwhere explicitly recited in a claim(s).

Aspects of the present invention may take the form of an entirelyhardware embodiment, an entirely software embodiment (includingfirmware, resident software, micro-code, etc.) or an embodimentcombining software and hardware aspects that may all generally bereferred to herein as a “circuit,” “module” or “system.”

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

Embodiments of the invention may be provided to end users through acloud computing infrastructure. Cloud computing generally refers to theprovision of scalable computing resources as a service over a network.More formally, cloud computing may be defined as a computing capabilitythat provides an abstraction between the computing resource and itsunderlying technical architecture (e.g., servers, storage, networks),enabling convenient, on-demand network access to a shared pool ofconfigurable computing resources that can be rapidly provisioned andreleased with minimal management effort or service provider interaction.Thus, cloud computing allows a user to access virtual computingresources (e.g., storage, data, applications, and even completevirtualized computing systems) in “the cloud,” without regard for theunderlying physical systems (or locations of those systems) used toprovide the computing resources.

Typically, cloud computing resources are provided to a user on apay-per-use basis, where users are charged only for the computingresources actually used (e.g. an amount of storage space consumed by auser or a number of virtualized systems instantiated by the user). Auser can access any of the resources that reside in the cloud at anytime, and from anywhere across the Internet. In context of the presentinvention, a user may access applications (e.g., one or more IMEtranscription services) or related data available in the cloud.Additionally, the proactive IME switching application could available inthe cloud. For example, the Error Analysis Module 107 could execute on acomputing system in the cloud and intelligently switch which IME serviceshould be provided to a user. In such a case, the Error Analysis Module107 could determine which IME is appropriate to use for a given inputand store IME switch logs at a storage location in the cloud. Doing soallows a user to access this information from any computing systemattached to a network connected to the cloud (e.g., the Internet).

While the foregoing is directed to embodiments of the present invention,other and further embodiments of the invention may be devised withoutdeparting from the basic scope thereof, and the scope thereof isdetermined by the claims that follow.

What is claimed is:
 1. A computer-implemented method of preemptive inputmethod editor (IME) switching, the computer-implemented methodcomprising: receiving a first input to be processed using a first IME ofa plurality of IMEs for a single language, wherein each of the pluralityof IMEs is configured to map input data of a respective data type tocorresponding characters in a respective, predefined manner; generatinga first string of one or more characters by mapping the first input tothe first string in the predefined manner according to the first IME;upon determining that in at least one prior instance, the first stringpreceded a second string of one or more characters subsequently rejectedby the user and after which the user indicated to switch from the firstIME to a second IME of the plurality of IMEs, automatically switching,by operation of one or more computer processors, from the first IME tothe second IME prior to receiving any input corresponding to the secondstring; and generating a third string by mapping a second input to thethird string in the predefined manner according to the second IME,wherein the first and third strings are provided as input to one or moreapplications.
 2. The computer-implemented method of claim 1, wherein thesecond IME is selected based on a plurality of error records, whereineach of the plurality of error records was generated in response to arespective error, wherein each of the plurality of error recordscomprises: a prior input that led to the respective error; a referenceto a prior IME, wherein the prior IME and the first IME are different;and a reference to a prior application that the prior input was intendedfor.
 3. The computer-implemented method of claim 1, wherein the secondIME is selected based on a plurality of predefined rules, wherein thepredefined rules comprise: a preferred IME for the first application;and a preferred IME to switch to if using the first IME yields anincorrect string.
 4. The computer-implemented method of claim 1, whereinthe first input comprises one of: audio for use with an audio IME; oneor more Latin alphabet characters; one or more strokes for use with astroke IME; and handwritten input for use with a handwriting IME.
 5. Thecomputer-implemented method of claim 1, wherein the first input isdistinct from the second input, wherein the predefined manner accordingto the first IME is distinct from the predefined manner according to thesecond IME.
 6. The computer-implemented method of claim 5, wherein thesingle language is one of: Chinese, Japanese, Korean, and Vietnamese. 7.The computer-implemented method of claim 1, further comprising: upondetermining that in one or more prior instances, the user indicated toswitch from the first IME to the second IME just prior to the thirdstring being generated and further indicated to switch from the secondIME back to the first IME just subsequent to the third string beinggenerated, automatically switching from the second IME back to the firstIME subsequent to generating the third string; and generating a fourthstring by mapping a third input to the fourth string in the predefinedmanner according to the first IME, wherein each of the first, third, andfourth strings, upon acceptance by the user, is submitted to input tothe one or more applications.
 8. The computer-implemented method ofclaim 7, wherein the third string is distinct from the second string,wherein each of the plurality of IMEs is of a distinct IME type, whereinthe first string immediately preceded the second string in the previousinstance, wherein the second string is not provided as input to any ofthe one or more applications; wherein the second IME is automaticallyselected based on a mapping between a context of the first input and thesecond IME, wherein the context of the first input comprises: (i) afirst application, of the one or more applications, that the first inputwas intended for; (ii) the first input; and a series of stringsdetermined just before receiving the first input.
 9. Thecomputer-implemented method of claim 8, wherein the second IME isautomatically selected based further on a plurality of error records,wherein each of the plurality of error records was generated in responseto a respective error, and wherein each of the plurality of errorrecords comprises: a prior input that led to the respective error; areference to a prior IME, wherein the prior IME and the first IME aredifferent; and a reference to a prior application that the prior inputwas intended for.
 10. The computer-implemented method of claim 9,wherein the second IME is automatically selected based still further ona plurality of predefined rules, wherein the predefined rules comprise:a preferred IME for the first application; and a preferred IME to switchto if using the first IME yields an incorrect string; wherein the firstand second inputs comprise two distinct input types selected from: (i)audio for use with an audio IME; (ii) one or more Latin alphabetcharacters; (iii) one or more strokes for use with a stroke IME; and(iv) handwritten input for use with a handwriting IME.
 11. Thecomputer-implemented method of claim 10, further comprising: receiving athird input using a third IME of the plurality of IMEs; determining afourth string corresponding to the third input and according to thethird IME; determining that a context of the third input matches acontext of each of a plurality of historical IME switches, wherein thecontext of the third input comprises a series of inputs that werereceived leading up to the third input, wherein the context of each ofthe plurality of historical IME switches comprises a series of inputsthat were provided leading up to the respective historical IME switch;selecting a fourth IME of the plurality of IMEs based on determiningthat the context of the third input matches the context of each of theplurality of historical IME switches; and determining a fifth stringcorresponding to a fourth input and according to the fourth IME.
 12. Thecomputer-implemented method of claim 11, wherein thecomputer-implemented method is performed by an IME manager, wherein thethird string is determined by: sending second input to a remote serverthat provides the second IME as a service and receiving the secondstring from the remote server, wherein each error record furtherincludes, for each application, a respective, distinct weightrepresenting a measure of influence that user-directed IME switching inthe respective application is to have on automatic IME switching of theIME manager; wherein the first input is distinct from the second input,wherein the predefined manner according to the first IME is distinctfrom the predefined manner according to the second IME, wherein the samelanguage is, in respective instances, Chinese, Japanese, Korean, andVietnamese.
 13. The computer-implemented method of claim 1, wherein thethird string is determined by: sending the second input to a remoteserver that provides the second IME as a service; and receiving thethird string from the remote server.
 14. A system of preemptive inputmethod editor (IME) switching, the system comprising: one or morecomputer processors; and a memory containing a program executable by theone or more computer processors to perform an operation comprising:receiving a first input to be processed using a first IME of a pluralityof IMEs for a single language, wherein each of the plurality of IMEs isconfigured to map input data of a respective data type to correspondingcharacters in a respective, predefined manner; generating a first stringof one or more characters by mapping the first input to the first stringin the predefined manner according to the first IME; upon determiningthat in at least one prior instance, the first string preceded a secondstring of one or more characters subsequently rejected by the user andafter which the user indicated to switch from the first IME to a secondIME of the plurality of IMEs, automatically switching from the first IMEto the second IME prior to receiving any input corresponding to thesecond string; and generating a third string by mapping a second inputto the third string in the predefined manner according to the secondIME, wherein the first and third strings are provided as input to one ormore applications.
 15. The system of claim 14, wherein the second IME isselected based on a plurality of error records, wherein each of theplurality of error records was generated in response to a respectiveerror, wherein each of the plurality of error records comprises: a priorinput that led to the respective error; a reference to a prior IME,wherein the prior IME and the first IME are different; and a referenceto a prior application that the prior input was intended for.
 16. Thesystem of claim 14, wherein the second IME is selected based on aplurality of predefined rules, wherein the predefined rules comprise: apreferred IME for the first application; and a preferred IME to switchto if using the first IME yields an incorrect string.
 17. A computerprogram product of preemptive input method editor (IME) switching, thecomputer program product comprising: a computer-readable storage mediumhaving computer-readable program code embodied therewith, thecomputer-readable program code executable by one or more computerprocessors to perform an operation comprising: receiving a first inputto be processed using a first IME of a plurality of IMEs for a singlelanguage, wherein each of the plurality of IMEs is configured to mapinput data of a respective data type to corresponding characters in arespective, predefined manner; generating a first string of one or morecharacters by mapping the first input to the first string in thepredefined manner according to the first IME; upon determining that inat least one prior instance, the first string preceded a second stringof one or more characters subsequently rejected by the user and afterwhich the user indicated to switch from the first IME to a second IME ofthe plurality of IMEs, automatically switching from the first IME to thesecond IME prior to receiving any input corresponding to the secondstring; and generating a third string by mapping a second input to thethird string in the predefined manner according to the second IME,wherein the first and third strings are provided as input to one or moreapplications.
 18. The computer program product of claim 17, wherein thesecond IME is selected based on a plurality of error records, whereineach of the plurality of error records was generated in response to arespective error, wherein each of the plurality of error recordscomprises: a prior input that led to the respective error; a referenceto a prior IME, wherein the prior IME and the first IME are different;and a reference to a prior application that the prior input was intendedfor.
 19. The computer program product of claim 17, wherein the secondIME is selected based on a plurality of predefined rules, wherein thepredefined rules comprise: a preferred IME for the first application;and a preferred IME to switch to if using the first IME yields anincorrect string.
 20. The computer program product of claim 17, whereinthe third string is determined by: sending the second input to a remoteserver that provides the second IME as a service; and receiving thethird string from the remote server.